package com.tuliyou.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;

/**
 * 分数段统计实体类（对应数据库score_ranks表）
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("score_ranks") // 指定对应数据库表名
public class ScoreRank implements Serializable {

    /**
     * 主键ID（自增）
     * 对应表中id字段，BIGINT类型
     */
    @TableId(value = "id", type = IdType.AUTO) // 自增主键
    private Long id;

    /**
     * 统计年份
     * 对应表中stat_year字段，非空（如2024）
     */
    @TableField(value = "stat_year")
    private Integer statYear;

    /**
     * 科目组合（仅物理类）
     * 对应表中exam_type字段，ENUM类型，默认"PHYSICS"
     */
    @TableField(value = "exam_type", fill = FieldFill.INSERT)
    private String examType = "PHYSICS";

    /**
     * 分数
     * 对应表中score字段，非空（如600）
     */
    @TableField(value = "score")
    private Integer score;

    /**
     * 该分数对应的省排名
     * 对应表中`rank`字段（数据库关键字，需转义），非空
     */
    @TableField(value = "`rank`")
    private Integer rank;

    /**
     * 该分数段人数
     * 对应表中`count`字段（数据库关键字，需转义），可为空
     */
    @TableField(value = "`count`")
    private Integer count;

    /**
     * 累计人数（≥该分数）
     * 对应表中cumulative_count字段，可为空
     */
    @TableField(value = "cumulative_count")
    private Integer cumulativeCount;

    /**
     * 序列化版本号（实现Serializable，避免分布式场景序列化异常）
     */
    @Serial
    private static final long serialVersionUID = 1L;
}
